package com.foreveross.crawl.application.task;

import java.util.List;

import org.quartz.Scheduler;

import com.foreveross.crawl.dto.TaskModelDto;
import com.foreveross.taskservice.common.bean.TaskModel;

/** 
 * @ClassName: ITaskOperateApplication 
 * @Description: 任务操作
 * @author luofangyi
 * @date 2014-7-2 下午3:58:08 
 *  
 */ 
public interface ITaskOperateApplication {

	/**  
	 * @Description: 更新单个任务状态
	 * @param taskDto
	 * @param scheduler
	 * @throws Exception
	 * @author luofangyi
	 * @date 2014-7-2 下午3:59:25 
	 */ 
	public void updateTaskStatusOfSingle(TaskModelDto taskDto, Scheduler scheduler) throws Exception;
	
	/**  
	 * @Description: 批量更新任务状态
	 * @param taskDtos
	 * @param scheduler
	 * @throws Eception
	 * @author luofangyi
	 * @date 2014-7-2 下午4:00:39 
	 */ 
	public void updateTaskStatusOfBatch(List<TaskModelDto> taskDtos, Scheduler scheduler) throws Exception;
	
	/**
	 * 将List数组转换成JSON,并持久化到本地文件中
	 * @param obj 适配器返回的数据
	 * @param model 任务模型
	 * @param fileName 文件名
	 * @param isAppend true:追加在已存在的文件中   false：清空当前内容重新追加
	 */
	public void persistenceListByJson(List<?> obj, String fileName, TaskModel model, boolean isAppend);
	
	/**  
	 * @Description: 对适配器返回的数据进行处理
	 * @param obj 适配器返回的解析结果
	 * @param model 任务模型
	 * @author luofangyi
	 * @date 2014-8-7 下午2:54:31 
	 */ 
	public void dealParseJson(List<?> obj, TaskModel model);
	
	/**  
	 * @Description: 将文件上传到fastdfs，并通知数据持久化中心
	 * @param persistenceUrl 数据持久化中心，通知文件下载的URL
	 * @param reTry 失败重试次数
	 * @author luofangyi
	 * @date 2014-8-7 下午3:18:24 
	 */ 
	public void uploadFile(String persistenceUrl, int reTry);
	
	public void dealZip(String zipPath, String zipName, long fileSize) throws Exception;
}
